public class Offer67 {
    public int strToInt(String str) {
        int i = 0;
        int len = str.length();

        while (i < len && str.charAt(i) == ' ') {  //直接跳到第一个非空格字符
            i++;
        }
        if (i == len)   return 0;
        char ch = str.charAt(i);
        if (ch != '-' && ch != '+' && !(ch >= '0' && ch <= '9')) {
            return 0;
        }

        boolean isNegative = false;
        if (str.charAt(i) == '-') {
            i++;
            isNegative = true;
        } else if (str.charAt(i) == '+') {
            i++;
        }

        int res = 0;
        while (i < len && str.charAt(i) >= '0' && str.charAt(i) <= '9') {
            if (res > Integer.MAX_VALUE / 10  || ((res == Integer.MAX_VALUE / 10) && str.charAt(i) > '7')) {
                if (isNegative) {
                    return Integer.MIN_VALUE;
                } else {
                    return Integer.MAX_VALUE;
                }
            }
            res = res * 10 + str.charAt(i) - '0';
            i++;
        }
        if (isNegative) {
            res *= -1;
        }
        return res;
    }
}
